package cn.iocoder.yudao.module.promotion.controller.admin.prizedraw.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 抽奖活动 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PrizeDrawRespVO {

    @Schema(description = "抽奖活动ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29726")
    @ExcelProperty("抽奖活动ID")
    private Long prizeDrawId;

    @Schema(description = "活动名称", example = "张三")
    @ExcelProperty("活动名称")
    private String prizeDrawName;

    @Schema(description = "活动时间开始")
    @ExcelProperty("活动时间开始")
    private LocalDateTime prizeDrawBegin;

    @Schema(description = "活动时间结束")
    @ExcelProperty("活动时间结束")
    private LocalDateTime prizeDrawEnd;

    @Schema(description = "活动规则")
    @ExcelProperty("活动规则")
    private String prizeDrawRule;

    @Schema(description = "抽奖背景图")
    @ExcelProperty("抽奖背景图")
    private String prizeDrawBackground;

    @Schema(description = "抽奖转盘图")
    @ExcelProperty("抽奖转盘图")
    private String prizeDrawTurntable;

    @Schema(description = "用户每日中奖次数限制（1：不限制，2：限制）", example = "1")
    @ExcelProperty("用户每日中奖次数限制（1：不限制，2：限制）")
    private Integer todayTotalType;

    @Schema(description = "用户每日中奖次数")
    @ExcelProperty("用户每日中奖次数")
    private Integer todayTotalNums;

    @Schema(description = "实物奖品兑换期限（1：不限制，2：固定天数）", example = "2")
    @ExcelProperty("实物奖品兑换期限（1：不限制，2：固定天数）")
    private Integer kindExchangeType;

    @Schema(description = "实物奖品兑换期限")
    @ExcelProperty("实物奖品兑换期限")
    private Integer kindExchangeNums;

    @Schema(description = "活动状态（1：进行中，2：待开始，3：已停用，4：已结束）")
    @ExcelProperty("活动状态（1：进行中，2：待开始，3：已停用，4：已结束）")
    private Integer status;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "奖项")
    private List<PrizeDrawAwardsRespVO> awards;

    @Schema(description = "启停状态")
    private Integer updown;

    @Schema(description = "更新时间")
    @ExcelProperty("更新时间")
    private LocalDateTime updateTime;

    @Schema(description = "更新人")
    @ExcelProperty("更新人")
    private Long updater;

    @Schema(description = "更新人名称")
    @ExcelProperty("更新人名称")
    private String updaterName;

    /** ----------------下面几个字段是 为了记录中奖范围和中奖数字的----------- */

    @Schema(description = "中奖数字范围起点（通常0作为起点）")
    private Integer winningStartCode;

    @Schema(description = "当前概率计算出的中奖数字范围终点")
    private Integer winningEndCode;

    @Schema(description = "中奖的数字范围")
    private Integer codeScope;

    @Schema(description = "刷新日期（1天刷新一次今日中奖数量，避免超抽）")
    private String refreshDate;

}